A good answer might be:

The answer is given in the completed program, below.


Complete Program

The following is a complete program, suitable for copying to Notepad and running.

import java.awt.*; 
import java.awt.event.*;
import javax.swing.*;

public class ButtonDemo2 extends JFrame implements ActionListener
{
  JButton bChange;

  // constructor 
  public ButtonDemo2() 
  {
    getContentPane().
        setLayout( new FlowLayout() ); // choose the layout manager 
    bChange = new JButton("Click Me!");// construct a Button
    bChange.addActionListener( this ); // register the ButtonDemo2 object 
                                       // as the listener for its Button.
    getContentPane().add( bChange );   // add the button to the container
  }
   
  public void actionPerformed( ActionEvent evt)
  {
    getContentPane().setBackground( Color.blue );
    repaint();   // ask the system to paint the screen.
  }

  public static void main ( String[] args )
  {
    ButtonDemo2 frm = new ButtonDemo2();
    
    WindowQuitter wquit = new WindowQuitter();
    frm.addWindowListener( wquit );
    
    frm.setSize( 200, 150 );     
    frm.setVisible( true );      

  }
}

class WindowQuitter extends WindowAdapter
{
  public void windowClosing( WindowEvent e )
  {
    System.exit( 0 );  // what to do for this event--exit the program
  }
}

The repaint() method asks the system to paint the screen again. Don't call paint(). The repaint() method tells the system that it will have to repaint the screen sometime soon (because we have changed something. The system will do this when it is ready.

QUESTION 14:

Should the entire frame be repainted every time a button is clicked?